/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fr.afcepf.groupe1.projet1.servicemaj;

import fr.afcepf.atod16.groupe1.projet1.dao.catalogue.DaoProduit;
import fr.afcepf.atod16.groupe1.projet1.dao.commande.DaoCommande;
import fr.afcepf.atod16.groupe1.projet1.dto.catalogue.DtoProduit;
import fr.afcepf.atod16.groupe1.projet1.dto.commande.DtoCommande;
import fr.afcepf.atod16.groupe1.projet1.dto.util.DtoMajCommande;
import fr.afcepf.atod16.groupe1.projet1.dto.util.DtoMajStock;
import fr.afcepf.atod16.groupe1.projet1.exception.EtatLivraisonException;
import fr.afcepf.atod16.groupe1.projet1.exception.InvalidArgumentException;
import fr.afcepf.atod16.groupe1.projet1.exception.NotExistException;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.jws.WebService;

/**
 *
 * @author G
 */
@Stateless
@WebService(endpointInterface="fr.afcepf.groupe1.projet1.servicemaj.ServiceMajWebservice", serviceName="ServiceMaj")
public class ServiceMaj implements ServiceMajWebservice{

    @EJB
    DaoProduit daoProduit;
    
    @EJB
    DaoCommande daoCommande;
    
    @Override
    public Boolean majStock(List<DtoMajStock> listStock) throws NotExistException, InvalidArgumentException {
        for(DtoMajStock  dtoMajStock : listStock){
            DtoProduit p = daoProduit.rechercherProduitParEan13(dtoMajStock.getCodeEAN13());
            if (p == null){
                throw new NotExistException("Le code ean13 '"+dtoMajStock.getCodeEAN13()+"' ne correspond a aucun produit dans la base de données du site web.");
            }
            p.setStock(dtoMajStock.getStock());
            daoProduit.modifier(p);
        }
        return true;
    }

    @Override
    public Boolean majCommande(DtoMajCommande majCommande) throws NotExistException, InvalidArgumentException, EtatLivraisonException {
            System.out.println("Dans la majCommande du projet1");
            System.out.println("id commande = "+majCommande.getIdSite());
            System.out.println("Etat livraison ="+majCommande.getEtatLivraison());
            if(majCommande.getIdSite() <=0){
        throw new InvalidArgumentException("L'id du produit ne peut etre 0 ou negative");
    }
            DtoCommande commande = daoCommande.rechercherParId(majCommande.getIdSite());
            if(commande == null){
                throw new NotExistException("Le produit avec l'id '"+majCommande.getIdSite()+"' n'est pas reconnu");
            }
            commande.setEtatLivraison(majCommande.getEtatLivraison());
            daoCommande.modifier(commande);
        return true;
    }
    
}
